package net.qiqbframework.messaging;

import java.util.Optional;

/**
 * 链式消息
 */
public interface ChainedMessage<M extends Message<?>> {

    /**
     * 下一个消息
     *
     * @return
     */
    default Optional<M> next() {
        return Optional.empty();
    }

    default void next(M next) {

    }


    /**
     * 是否有上一个消息
     *
     * @return
     */
    default Optional<M> previous() {
        return Optional.empty();
    }


    /**
     * 是否激活
     *
     * @return
     */
    default boolean isActive() {
        return true;
    }


    default boolean groupByPrevious(M preMessage) {
        return false;
    }

    default boolean groupByNext(M nextMessage) {
        return false;
    }
}
